/**
 * Copyright (c) 2016-2020, Michael Yang 杨福海 (fuhai999@gmail.com).
 * <p>
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/lgpl-3.0.txt
 * <p>
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */
package cn.hg.jboot.commons.sms;

import com.jfinal.kit.StrKit;

import cn.hutool.core.util.BooleanUtil;
import io.jboot.Jboot;
import io.jboot.core.spi.JbootSpiLoader;

public class SmsSenderFactory {

    public static SmsSender createSender() {

        boolean smsEnable = BooleanUtil.toBoolean(Jboot.configValue("jbsa.sms.enable"));

        if (smsEnable == false) {
            return new NonSmsSender();
        }

        String type = Jboot.configValue("jbsa.sms.type");

        // 默认使用阿里云
        if (StrKit.isBlank(type)) {
            return new AliyunSmsSender();
        }

        switch (type) {
            case "aliyun":
                return new AliyunSmsSender();
            case "qcloud":
                return new QCloudSmsSender();
        }

        // 其他通过SPI扩展机制加载
        return JbootSpiLoader.load(SmsSender.class, type);
    }

}
